package entidades;

import util.MySQL;
import java.util.List;
import java.util.HashMap;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.google.gson.Gson;

/**
 *
 * @author JFM
 */
public class Linea extends Entidad
	{
	private String inicial;
	private String descripcion;
	private int cantidadMinima;

	static final String NOMBRE_TABLA = "lineas";

	public static final int JUPITER = 4;
	public static final int TIERRA_ARTESANAL = 5;


	// --- Constructores --- //

	public Linea()
		{
		id = 0;
		inicial = "";
		descripcion = "";
		cantidadMinima = 0;
		}

	public Linea(int id) throws SQLException
		{ super(id); }

	public Linea(String id) throws SQLException
		{ super(id); }

	public Linea(ResultSet result) throws SQLException
		{ super(result); }

	public Linea(ResultSet result, String prefix) throws SQLException
		{ super(result, prefix); }



	// --- Metodos get()/set() --- //

	public String getDescripcion()
		{ return descripcion; }
	public void setDescripcion(String descripcion)
		{ this.descripcion = (descripcion != null)? descripcion : ""; }

	public String getInicial()
		{ return inicial; }
	public void setInicial(String inicial)
		{ this.inicial = (inicial != null)? inicial.substring(0,1) : ""; }

	public int getCantidadMinima()
		{ return cantidadMinima; }
	public void setCantidadMinima(int cantidadMinima)
		{ this.cantidadMinima = cantidadMinima; }
	public void setCantidadMinima(String cantidadMinima)
		{ try{this.cantidadMinima = Integer.parseInt(cantidadMinima);}catch(Exception e) {this.cantidadMinima = 0;} }

	@Override
	public String getDescriptor()
		{ return descripcion; }

	@Override
	public String toString()
		{ return descripcion; }

	@Override
	public String toJson()
		{
		HashMap map = new HashMap();
		map.put("id", id);
		map.put("descripcion", descripcion);
		map.put("inicial", inicial);
		map.put("cantidad_minima", cantidadMinima);
		return new Gson().toJson(map);
		}



	// --- Metodos MySQL --- //

	@Override
	public String getNombreTabla()
		{ return NOMBRE_TABLA; }

	@Override
	public void leer(ResultSet result, String prefijo) throws SQLException
		{
		this.setId(result.getInt(prefijo + "id"));
		this.setDescripcion(result.getString(prefijo + "descripcion"));
		this.setInicial(result.getString(prefijo + "inicial"));
		this.setCantidadMinima(result.getString(prefijo + "cantidad_minima"));
		}

	@Override
	public void guardar() throws SQLException
		{
		ResultSet result = MySQL.executeQuery("Call Lineas_Save(" +
				MySQL.formatId(id) + "," +
				MySQL.format(inicial) + "," +
				MySQL.format(descripcion) + "," +
				MySQL.format(cantidadMinima) + ")");

		if(result.next())
			{
			if( result.getMetaData().getColumnCount() == 1)
				{
				String msj = result.getString("mensaje");
				throw new SQLException(msj);
				}
			else
				leer(result);
			}

		result.getStatement().close();
		}

	@Override
	public void borrar() throws SQLException
		{ borrar(id+""); }

	public static void borrar(String id) throws SQLException
		{
		String msj = null;
		ResultSet result = MySQL.executeQuery("Call Lineas_Delete("+id+")");
		if(result.next())
			{ msj = result.getString("mensaje"); }
		result.getStatement().close();
		if(msj != null && msj.compareToIgnoreCase("ok") != 0)
			{ throw new SQLException(msj); }
		}

	public static List<Linea> listar() throws SQLException
		{ return (List) Entidad.listar(Linea.class, NOMBRE_TABLA, "descripcion ASC"); }




	}
